package com.iwop.moto.controller;

import com.iwop.moto.comm.ErrCode;
import com.iwop.moto.model.ResultModel;
import com.iwop.moto.model.SuperRecordModel;
import com.iwop.moto.service.OrderAddressService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.Date;
import java.util.List;
import java.util.UUID;

/**
 * liuwb 2016-07-29 14:01
 */
@Controller
public class OrderAddressController extends BaseController {

    @Autowired
    private OrderAddressService orderAddressService;


    /**
     * **************************************
     * 功能: 收货地址 - 新增
     * liuwb 2016-08-02 15:56
     * 参数: userId 收货人用户id
     * 参数: consignee 收货人
     * 参数: consigneeTel 收货人手机号
     * 参数: province 省
     * 参数: city 市
     * 参数: area 区
     * 参数: address 详细地址
     * 参数: status 默认收货状态
     * **************************************
     */


    @RequestMapping("/api/order/address/add")
    @ResponseBody
    public ResultModel apiOrderAddressAdd() {
        SuperRecordModel SRModel = this.getSRModel();
        try {
            SRModel.put("sid", UUID.randomUUID().toString());
            if ("2".equals(SRModel.getString("status"))) {//如果是设置为默认地址
                orderAddressService.updateStatusResetByUserId(SRModel);//先全部重置为正常状态
                SRModel.put("statusFlag", "2");//默认地址
            } else {
                SRModel.put("statusFlag", "1");
            }
            SRModel.put("statusTime", new Date());
            orderAddressService.insertAddress(SRModel);
            return getSucceed(ErrCode.SUCCEED);
        } catch (Exception e) {
            e.printStackTrace();
            return getErr(ErrCode.ERROR_SYSTEM);
        }
    }

    /**
     * **************************************
     * 功能: 收货地址 - 列表
     * liuwb 2016-08-02 15:59
     * 参数: userId 用户Id
     * **************************************
     */
    @RequestMapping("/api/order/address/list")
    @ResponseBody
    public ResultModel apiOrderAddressList() {
        SuperRecordModel SRModel = this.getSRModel();
        try {
            List<SuperRecordModel> lists = orderAddressService.findOrderAddressByUser(SRModel);
            return getSucceed(lists);
        } catch (Exception e) {
            e.printStackTrace();
            return getErr(ErrCode.ERROR_SYSTEM);
        }
    }

    /**
     * **************************************
     * 功能:收货地址 - 详情
     * liuwb 2016-08-02 15:59
     * 参数: sid 主键
     * **************************************
     */
    @RequestMapping("/api/order/address/detail")
    @ResponseBody
    public ResultModel apiOrderAddressDetail() {
        SuperRecordModel SRModel = this.getSRModel();
        try {
            SRModel = orderAddressService.findOrderAddressDetail(SRModel);
            return getSucceed(SRModel);
        } catch (Exception e) {
            e.printStackTrace();
            return getErr(ErrCode.ERROR_SYSTEM);
        }
    }

    /**
     * **************************************
     * liuwb 2016-08-02 16:27
     * 参数: sid 主键
     * 参数: userId 用户Id
     * 参数: consignee 收货人
     * 参数: consigneeTel 收货人手机号
     * 参数: province 省
     * 参数: city 市
     * 参数: area 区
     * 参数: address 详细地址
     * 参数: status  2默认地址 1正常
     * **************************************
     */
    @RequestMapping("/api/order/address/update")
    @ResponseBody
    public ResultModel ApiUdateOrderAddressBySid() {
        SuperRecordModel SRModel = this.getSRModel();
        try {
            SRModel.put("statusTime", new Date());
            if ("2".equals(SRModel.getString("status"))) {//如果是设置为默认地址
                orderAddressService.updateStatusResetByUserId(SRModel);//先全部重置为正常状态
                SRModel.put("statusFlag", "2");//默认地址
            }
            orderAddressService.updateOrderAddressBySid(SRModel);
            return getSucceed(ErrCode.SUCCEED);
        } catch (Exception e) {
            e.printStackTrace();
            return getErr(ErrCode.ERROR_SYSTEM);
        }
    }

    /**
     * **************************************
     * 功能:收货地址 - 修改默认地址
     * liuwb 2016-08-02 15:59
     * 参数: sid 主键
     * 参数: userId 主键
     * **************************************
     */
    @RequestMapping("/api/order/address/status")
    @ResponseBody
    public ResultModel ApiUdateStatusBySid() {
        SuperRecordModel SRModel = this.getSRModel();
        try {
            SRModel.put("statusTime", new Date());
            orderAddressService.updateStatusResetByUserId(SRModel);//重置全部为正常
            SRModel.put("statusFlag", "2");
            orderAddressService.updateStatusBySid(SRModel);//修改为默认地址
            return getSucceed(ErrCode.SUCCEED);
        } catch (Exception e) {
            e.printStackTrace();
            return getErr(ErrCode.ERROR_SYSTEM);
        }
    }

    /**
     * 功能: 删除收货地址
     * liuwb 2016-08-02 19:29
     * 参数: sid 主键
     */
    @RequestMapping("/api/order/address/delete")
    @ResponseBody
    public ResultModel apiOrderAddressDelete() {
        SuperRecordModel SRModel = this.getSRModel();
        try {
            orderAddressService.deleteBySid(SRModel);
            return getSucceed(ErrCode.SUCCEED);
        } catch (Exception e) {
            e.printStackTrace();
            return getErr(ErrCode.ERROR_SYSTEM);
        }
    }


}
